python - 将 IPython 变量作为参数传递给 bash 命令
全部标签 我有一个带有可选参数的方法。我如何确定是否给出了Argument?我想出了以下解决方案。我问这个问题是因为我对其中任何一个都不完全满意。还有更好的吗?nil作为默认值defm(a=nil)ifa.nil?...endend这个的缺点是,无法确定是没有参数还是nil被给出。自定义NoArgument作为默认值classNoArgumentenddefm(a=NoArgument.new)ifNoArgument===a...endend是否给定nil是可以判断的,但是NoArgument的实例也存在同样的问题。评估省略号的大小defm(*a)raiseArgumentErrorifm.s
所以我知道您可以通过调用#instance_variables获取Ruby中的所有实例变量,但如果它们尚未设置,则它们不会显示。示例classWalrusattr_accessor:flippers,:tusksendw=Walrus.neww.instance_variables#=>[]w.tusks#=>nilw.instance_variables#=>[:@tusks]我想立即访问attr_accessor定义的所有实例变量。w=Walrus.neww.instance_variables#=>[:@tusks,:@flippers] 最佳答案
我找不到任何关于这是否可能的信息,但它会很有用及时思考。例如,我试图找出其中哪一个更快:[val2,val3,val4,val5,val6].find{|x|x!=val1}[val2,val3,val4,val5,val6].all?{|x|x==val1}有这样的东西吗?[val2,val3,val4,val5,val6].find{|x|x!=val1}.performance 最佳答案 有!而且您甚至不需要Rails。查看benchmark来自标准库。作为示例:require'benchmark'putsBenchmark.
在开发和调试时,有时我希望我可以编写一个1-liner来转储一堆变量的名称、类型和值。问题是我根本不知道如何访问变量的名称。这是第一次尝试:foo=1bar="42"baz=Hash.new[foo,bar,baz].eachdo|v|puts"#{v.???}=(#{v.class})#{v}"end我希望这个程序的输出是这样的:foo=(Fixnum)1bar=(String)42baz=(Hash)...我不知道???应该在上面。这能做到吗? 最佳答案 foo=1bar="42"baz=Hash.new%w(foobarbaz
我正在设置一个可以发出LastFMAPI请求的应用程序。这些是简单的获取请求,我正在使用HTTPartygem。我的函数如下:defget_albumsself.class.base_uri"http://ws.audioscrobbler.com/2.0/"options={:user=>"Gerard1992",:method=>"user.gettopalbums",:api_key=>Constants::LASTFM_API_KEY,:format=>"json"}putsoptions.to_queryself.class.get"/?#{options.to_query}
如何访问包含文件中定义的变量?#inc.rbfoo="bar";#main.rbrequire'inc.rb'putsfoo#NameError:undefinedlocalvariableormethod`foo'formain:Object 最佳答案 您无法访问其定义范围之外的本地文件——在本例中为文件。如果您想要跨文件边界的变量,请将它们设为局部变量。$foo、Foo和@foo都可以。如果你真的不想在符号上放置任何类型的装饰(可能因为你不喜欢它的读法),一个常见的hack就是将它定义为一个方法:deffoo()"bar"end
proc=Proc.newdo|name|puts"Thankyou#{name}!"enddefthankyieldendproc.call#outputnothing,justfineproc.call('God')#=>ThankyouGod!thank&proc#outputnothing,too.Fine;thank&proc('God')#Error!thank&proc.call('God')#Error!thankproc.call('God')#Error!#So,whatshouldIdoifIhavetopassthe'God'totheprocandusethe
上下文:我正在做的部分工作涉及将文本段落从word文档粘贴到ruby文件中。问题:这些段落被粘贴为一行很长的文本,我必须手动插入换行符以使这些行的长度合理。解决方案:有没有办法让粘贴功能“意识到”合理的边距限制并在我粘贴时将文本换行? 最佳答案 先做一个settextwidth:settw=80然后执行gqq-对于单行对于整个文件ggVGgqq 关于ruby-使用vim,是否有命令自动换行粘贴文本?,我们在StackOverflow上找到一个类似的问题:
我正在使用Paperclip为RubyonRails编写一些图像上传代码,我有一个可行的解决方案,但它非常老套,所以我非常感谢有关如何更好地实现它的建议。我有一个“Assets”类,其中包含有关上传图像(包括回形针附件)的信息,以及一个封装尺寸信息的“生成器”类。每个“项目”都有多个Assets和生成器;所有Assets都应根据每个生成器指定的大小进行调整;因此,每个项目都有其所有Assets都应具有的一组特定大小。发电机型号:classGeneratorAssets模型:classAssetlambda{|a|a.instance.styles}belongs_to:project#
我编写的脚本在启动时运行,需要设置环境变量,但是Ruby的Exceptions,是最好的?我使用了LoadError,我只是想尽可能具有描述性并遵循适当的约定。其次,除了检查环境变量的长度外,我找不到其他方法来查看是否设置了环境变量,但这似乎不太优雅。beginraiseLoadErrorifENV['FOO'].to_s.length==0system"openhttp://example.com/"+ENV['FOO']rescueException=>eputs"=>#{e}FOOenvironmentvariablenotset"end 最佳答案